Guides
Templating guide
Explains how to use dynamic templatesCreating your own portlets with custom apps
Developing with the KongDB, the Kademi JSON databaseCustom Error Pages
Eamil templatesCustom reports
Summarises the different types of forms in Kademi, and how you can use themEmail Templates
Eamil templatesForms
Summarises the different types of forms in Kademi, and how you can use themHandling Email with a Custom App
Shows how to capture incoming emailsServer side JS controllers
Developing with the KongDB, the Kademi JSON databaseUsing the Kademi JSON Database
Developing with the KongDB, the Kademi JSON databaseOAuth 2
Explains how to use OAuth 2 with KademiManaging permissions with roles and groups
Developing with the KongDB, the Kademi JSON databaseProfile matching and merging in integration scripts
Video walkthrough of using the profile matching and merging API in integration scriptsDeveloping with Surveys
Shows how to create forms which submit survey results, and use the results with ajaxUser and Membership API
Explanation of the API for manipulating profiles, groups and group membershipsScreens
Admin App
The admin app contains all of the general administrative screens such as managing users and groupsDashboard Alerts App
This lets you display alerts to users on their dashboard. They can be sent to groups immediately, or triggered from events with automationAuctions App
The auctions app lets you run auctions on your websites, either using points or as regular cash auctions. Auctions can be of different types including the usual highest bid type, or lowest unique bid.aws
Blogs
This app lets you create blogs, where each blog is a list of blog articles. Blogs have tags which users can select to indicate preference or browse. Articles can be featured for greater prominence and have a set of images.Calendars
Calendars are mobile enabled, and allow you to invite users to events by email which they can register to attend. Includes scheduled reminders and confirmation emails.ContactUs App
The ContactUs app creates contact pages for users of your website to submit forms, typically requesting informtation. These forms can be customised to collect general information, such as surveysDashboard App
The Dashboard app gives each user a dashboard which presents them with a jumping off point when they log in. Other apps might add components to the dashboardecommerce
Email App
The email app has featured for sending automated and group emails, and gives users their own inbox for a summary of notificationserror
EWay Payments App
Provides a connector to the EWay payments processor service. You must get an EWay account to use this app.FileServer App
FileServer app allows you to use Fuse like an internet file server.Forums App
Forums app allows you to run forums for your users.funnels
GroupResources App
Group Resources lets you share files with particular user groupsIntegration services
Integrate with external systems and data sources, by implementing email and web endpoints that can send and receive and transform files and datakongodb
Online Learning App
The learning app allows you to create courses and incentives and manage learners progressmarketplace
orgsLocator
payment
Products App
The Products app gives you a database that you can add your products to. Users can browse the products and order them. Normally used for ordering samples and marketing materials.referral
reporting
rewardstore
salesdata
Scheduler App
Scheduler runs jobs at certain times. Good for sending reports etc to administratorssearch
shoppingcart
shortUrl
sms
team
user
videosurveyapp
Vouchers app
Templating reference summaries
Templating
AbstractBranchFolder
Base class for resources which represent a branchAbstractContentResource
AbstractECommerceStoreCollectionResource
The common base class for both the store folder and category folders Provides methods for searching for products within this resource. Eg a search within a ECommerceStoreCategoryFolder only yields results within that category, but a search on ECommerceStoreFolder yields results from all categories in the storeAbstractManageAssetResource
AbstractResource
Base class for pretty much all resourcesAbstractRewardStoreCollectionResource
AcceptQuoteGoal
When a profile is added/removed to a groupActivateAlertAction
AddToGroupGoalAction
AddToOrgTypeGoalAction
AggBucket
AlertBean
AlertsApp
AllocateVoucherGoalAction
AppControlBean
AppReport
AppTransactionManager
A transaction manager intended specifically for use with custom apps This is available as the transactionManager variable. So in custom apps you use this:transactionManager.commit();
Applications
Provides access to other applications EgAppsPageHelper.Update
AppsPageHelper
AssetManager
AssetTypeService.ContentTypes
AssetsFolder
AssignToGoalAction
AttendeeGuest
Used by the calendar managerAuctionApp
AuctionBidBean
AuctionBidEvent.AuctionBidAction
AuctionBidEvent
Fired when a bid is placed. Can mean that a user has placed a new bid, or that a user who was previously in teh lead is no longer leadingEvent ID: auctionBid
AuctionBidEventTriggerType
AuctionBidSimpleBean
AuctionClosedEvent
Fired when an auction closes, it has the following actions:- CLOSED_WITH_WINNER - Fired when there is a winner, the source profile is the winner
- CLOSED_WITHOUT_WINNER - Fired when there is no winner
- CLOSED_BIDDER - Fired for every user that has placed a bid on the auction. Excludes the winner
AuctionClosedEventTriggerType
AuctionFolder.AuctionImageResource
AuctionFolder.Image
An image which has been assigned to the auction with an optional orientation. These are generally used for templatingAuctionFolder
AuctionsFolder
Represents the root collection of auctionsAutoEmailSearchManager
Methods for accessing automation and mail statsAutomationGoal
When an automation event is triggeredBaseBucket
BaseSearchPage
Begin
BlogArticleFolder.BlogFileResource
BlogArticleFolder.BlogImageResource
BlogArticleFolder.Image
An image which has been assigned to the blog with an optional orientation. These are generally used for templatingBlogArticleFolder
Represents an article in a blog.An article has a title, body, brief description and blog images. An article is also a folder and can contain resources such as images used in body content
Blog images are images which are specifically assigned to the article with an orientation and they are used for templating purposes.
Articles have an approval process to allow blog authors to have their work checked before being published to the website.
BlogFolder
A BlogFolder is a folder containing blog articles. It also has tags and categories which can be assigned to its articlesBlogsFolder
Represents a collection of blogs, where a blog is a stream of articlesBlogsResourceList
A specialised type of ResourceList, this has extra methods for handling lists of blog articlesBranchGoal
A goal which is linked to multiple other goals. This goal is achieved when one of the subsequent goals is achieved This allows a journey to have branches, like decision nodes but where we wait for an outcome.CalEventAttendeesResource
CalEventResource
Represents a calendar event, ie an invitationUsers can RSVP for this event by posting a form to is containing a parameter 'rsvp'
Calc
CalendarEventAccepted
Event ID: calendar-event
CalendarEventAcceptedTriggerType
Called when a user RSVP's for a calendar eventCalendarEventDeclined
Event ID: calendar-event
CalendarFolder
CalendarHomeFolder
CancelGoalAction
CashCurrency
CategoryBean
CategoryTableProvider
CertificateFolder
Represents a certificate, typically awarded for completed training activities This folder will generate HTML applying a template. The parent folder will usually be a module folder, and if so status for the current user about that module will be referenced in the certificate.ChildrenOfTypeMap
Column
Maps a column or attribute to a field name. Used for inserting dataColumnsHelper
Provides typed access to the value in a column, including the ability to evaluate expressionsCommentBean
Represents a comment by a user on some resource.CommentsResource
ComponentBean.AttsMap
ComponentBean
ComponentHtmlTemplater
This HTML Templater assumes page templates contain components, so should not be directly templated. Instead this will look for a master template tag in the page template, and then invoke that passing the template path for it to useConstExpression
ContactEvent
This event is fired when a user submits a contactus form. It contains an attribute called contactRequest, which returns the ContactRequest recordEvent ID: contact
ContactEventTriggerType
ContactFormEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)ContactFormGoal
When a contact form/landing page is accessed or submittedContactRequest
ContactRequestBean.AttachmentBean
ContactRequestBean.FieldBean
ContactRequestBean
Represents a single contact request, which is a submission from a (possibly anonymous) userContactRequestsJsonResource
Outputs the stream activity as jsonContactUsFormPage
Submit forms to this resource (usually on /contactus) as a POST to send contact email requests The contactus form page is conceptually very similar to the group registration page. Both will create a profile if it doesnt exist and you can submit data to both, and both can trigger events to send emails, etc. The difference is that a contact submission only creates new data, it never changes existing data. Whereas registering a user can allow existing profile data to be modified.Captcha
If a Captcha app is enabled it will be used to verify the response. You can customise the error response message by sending a parameter called invalidCaptchaMessageContentSearchPage
Use this to do queries, optionally including aggregations and selecting terms Eg contentSearch?q=farm&aggregations=type/categories&term-type=News This will query for: query text = farm (will search in title, content) type = News (will look for a type field of exact value News) aggregations: first by type, then with a nested aggregation of categoriesControllerMappingBuilder
Use this to create a URL to controller mapping for a custom app or for a website controller. Use either the admin or website controller root objects depending on whether you want to create a controller for websites or for the administration system- controllerMappings.adminController() - For admin screens
- controllerMappings.websiteController() - For website controllers
controllerMappings.adminController().path("/bluefin").enabled(true).defaultView(views.templateView("bluefin/manageProjects")) .addMethod("POST", "addProject", "newProjectName") .addMethod("POST", "setupDatabase", "setupDatabase") // temporary only, needs to be part of initialisation .addMethod("POST", "newCandidate", "newCandidateId") .addMethod("POST", "publish", "publish") .addMethod("POST", "startSync", "sync") // start a sync operation, will redirect if need oauth login .addMethod("POST", "updateFields", "updateFields") // update project fields .build();
ControllerMappingList.JsProcessable
ControllerMappingList
ControllerResource
This is the resource which gets created when a controller mapping is located. It executes the javascript and templates Scripts executed from a ControllerResource have access to these global variables- controllerMappings
- views - ViewsBuilder
- formatter - Formatter
- log
- applications
- transactionManager - AppTransactionManager
- fileManager - FileManager
CopyLeadFileGoalAction
CountryCodes.CountryCode
CountryCodes
CourseFolder
A course, which is just a special type of folder that contains modulesCpdAwardBean
CreateCalendarEventGoalAction
CreateDataSeriesRecordGoalAction
CreateNoteGoalAction
CreateTaskGoalAction
CryptoImpl
CsvInput
Parses CSV files into lines of discrete values which are fed to row processing stepsCsvOutput
Converts incoming rows into a CSV stream sent to the pipeline outputCsvView
Currency
Represents some type of currency which can be used to make payments. Different currencies are not interchangeable. Currencies, in this context, include actual physical currencies like USD, AUD, etc, as well as things which can be considered means of payment within Kademi but are not necessarily actual currencies, such as reward points, Bitcoin, trade dollars, etcCustomerAction
Represents an action in relation to a customerDashboardAlertPage
DashboardPage
Dashboard for the user. Most functions will be provided by PortletApplications which will be invoked from the template using the PortletsDirective Eg: #portlets("messages") , which will render portlets for the messages section of the page Standard sections are intended to be: messages - brief list of messages at top of page primary - this is the main section of the page, with about 70% width secondary - this is a narrowed section of the page, possible lower down for small screen clientsDataSeriesData
DataSeriesFolder
Represents a Data Series, and provides properties for ranking participants etcDataSeriesLeaderBoard.LeaderboardRanking
Represents a ranking of a participant. The rank is zero indexed, and zero is the highest or lowest as appropriate for the method which returned the results The participant is either an OrgData or ProfileBeanDataSeriesLeaderBoard
This represents a period of time (if dates have been specified) for a data series, which can be queried to find the top (or lowest) results Note that results can be attributed either to an individual (ie a profile) or to the organisation they're in (eg store or other business unit)DataSeriesProvider
NOTE - use the SalesDataInserter instead!!!!DataSeriesValueGoal
When a user (or an org they're connected to) has achieved a certain value in a specified data seriesDatabaseSourceStep
Executes a query against the kademi database and feeds each resulting object to the next step Select the appropriate query source with providerIdDatabaseUpdateStep
Intended to receive rows. Updates, deletes or inserts into the selected provider based on the mode property which can be - update, insert, delete, updateOrInsert Update, Delete and updateOrInsert operations require an identifier This step works with a provider that provides access to a particular table. Available providers are:- CategoryTableProvider
- DataSeriesProvider BUT you should probably use SalesDataInserter instead
- GroupMembershipTableProvider
- OrganisationTableProvider
- PointsRowProvider not complete at time of writing
- CategoryTableProvider
- ProductsTable
- ProductOptionsTable
- ProductInRewardTableProvider
DecisionAction
DecisionStep
Selects the next step from a list of options Configured with a map of next steps, where the key for each step is used to select it Provide with either a column number or an attribute name to use to get the value to select the next stepDefaultElasticSearchManager.DefaultKSearchRequestBuilder
DefaultElasticSearchManager.DefaultKSearchResponse
DefaultElasticSearchManager.DefaultMappingMetaData
DefaultStreamEvent
DependencyMappingBuilder
DiffieHellmanModule
DirectoryResource
Represents a version of a directory, containing the members which are in that directory in the repository snapshotDiscountPromotionItem
DoPasswordResetPage
ECommerceCartItemResource
ECommerceShoppingCartResource
ECommerceStoreFolder
The root resource for an e-commerce store. This provides access to categories and products linked to this store See the base class AbstractECommerceStoreCollectionResource for moreEmailApp.EmailStats
EmailAttachment
Represents an email attachment.EmailAttachmentFile
EmailContentService.EmailContent
EmailContentService
EmailDeliveryEvent
Fired when an email is delivered, failed to deliver, opened, convertedEvent ID: emailDelivery
EmailDeliveryEventTriggerType
This type of event is fired on an email delivery result, ie when delivery has succeeded, failed, opened or convertedEmailFolder
List emails for this userEmailItem
Represents a task to send an email, which may have been sent or might be queued to be sent. Also represents an email received, if the recipient profile is set it will show in their internal inbox. Email attachments: TODO - probably just have a list of name and crc, then the attachment can be put in any repositoryEmailItemBuilder
Use this to create and send an email. Example use:applications.email.emailBuilder() .recipientAddress('test@yourdomain.co') .fromAddress('noreply@yourdomain.co') .subject('An email from ME! :-)') .html('<p><strong>Hello World</strong></p>') .build();or
var recipient = page.find('/users/test3/').thisProfile; applications.email.emailBuilder() .recipient(recipient) .fromAddress('noreply@yourdomain.co') .subject('An email from ME! :-)') .html('<p><strong>Hello World</strong></p>') .build();
EmailItemFolder
Represents a single email, which might contain attachmentsEmailOpenAcknowledgePage
Just outputs a one-pixel gif, and records the associated email as being openedEmailReceivedEvent
Fired when a user receives an emailEmailReceivedEventTriggerType
EmailResponseEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)EmailResultGoal
Transitions based on the result of the last email sent by this funnelEmailSendGoal
Goal acheived when a matching email is **sent**, regardless of delivery statusEndGoalAction
EndPointMapping
EngagementScoringFactor
EngagementScoringFactorType.EngagementScoringProperty
EngagementScoringFactorType
EventBuilder
EventGoal
When an trigger event is fired. Works with TriggerFunnelEventEventWrapper
EwayApp
ExcelInputStep.NextSheetStep
ExcelInputStep
Parses incoming stream as an excel workbook (xslx). This step can be configured to pass on the entire workbook, or just a single sheet, or it can process rows optionally skipping headers. You can specify a nexts step for each sheet (either use sheetNum or sheetName) <ExcelInputStep> <skipHeaderRow>false</skipHeaderRow> <processRows>false</processRows> <nextSheetSteps> <ExcelInputStep sheetNum="0"> <next class="JsRowStep"/> </ExcelInputStep> </nextSheetSteps> <useXml>false</useXml> </ExcelInputStep> Or a single next step which will be given the entire workbook as a org.apache.poi.ss.usermodel.Workbook <ExcelInputStep> <skipHeaderRow>false</skipHeaderRow> <processRows>false</processRows> <next class="JsRowStep"/> </ExcelInputStep>ExcelOutputStep
Is intended to be used by other steps to create, populate, and output an excel document dynamically This class has methods to create a workbook which can then be manipulated from a previous stepExpiringPointsList
ExtProfileBean
Just like a normal profile bean, but with extra stuff that admins can seeExtraField
Facet
Extracted From FacetsReportFacetsReport.LongRangeFacetBucket
FacetsReport.TermFacetBucket
A term bucket supports sub bucketsFacetsReport
FastPointsDebitRowProvider
FastPointsRowProvider
FederatedLoginProviderBean
FieldBean
FieldMapping
FileHashView
FileManager
FileResource
A FileResource represents a file, such as an image or video. It will also represent HTML pages and there are methods for accessing the structured content within a HTML page, such as title, body and data parametersFileUploadEvent
Fired when a user joins a groupEvent ID: subscription
FileUploadEventTriggerType
FileUtils
FixedWidthInput
Parses fixed width text files into lines of values which can be fed to row processing stepsForkGoalAction
FormData
FormGoal
When a profile is added/removed to a groupFormatter
Handy functions exposes to rendering logic for formatting.ForumReplyResource
Funnel
FunnelEdm
Links a Funnel node with a EmailItem or SmsItem, so we can report on EDM statsFunnelTester
Added to a funnel so that users with particular email addresses get special treatment to facillitate testingGeoIPService
GeoIpWrapper
A Wrapper for the MaxMind Geo IP2 lookupGeoLoc
GiftPromotionItem
GoalAttainedTriggerType
GrantRewardsGoalAction
GroupGoal
When a profile is added/removed to a groupGroupInWebsiteFolder
Represents a group which has access to the current website. This can be used to find information about registration options, etcGroupMembershipTableProvider
GroupRegistrationEvent
Fired when a user submits a registration form successfullyEvent ID: registration
GroupRegistrationPage
Manages registration of a user when signing up to a groupGroupSignupStat
GuestBean
HttpWrapper
Provides access to the http request and response objects for when handling http operationsInfusionsoftCreateOpportunityAction
IntegrationApp
This app assists with getting data in and out of your kademi account, integrating with your external data stores. Integration services are made available through the websites which have the integration app enabled. You configure it by creating an XML file in /theme/integration.xml, which has a list of endpoint mappings. For example:ItemCount
Represents an item and the number of its occurences. Used with blog tagsJsRowStep.RowWriter
JsRowStep
Executes javascript for each row. The js is expected to transform or aggregate incoming data, probably holding stateful information between calls to writeRow. Output will be generted from the js by calling writeRow(..) Script context variables:- pipeline - a Pipeline object
- thisStep - also a referene to the current Pipeline
- formatter - the Formatter
- nextStep - a NextStep object, representing the next step to be executed after the current
- log - the logger for generating console log output
- applications - an Applications object, use it to reference other apps and their services, eg applications.search.searchManager.search(...)
- fileManager - a FileManager object
<RecordExecutionStep> <preventDuplicates>false</preventDuplicates> <execIdTemplate>StarClass-Dealer-Targets_2015</execIdTemplate> <next class="TransactionStep" alwaysRollback="false"> <next class="ExcelInputStep"> <useXml>true</useXml> <processRows>true</processRows> <nextSheetSteps> <NextSheetStep sheetNum="0" startRow="2"> <next class="JsRowStep"> <!-- Execute the next step for each month, setting the month number into attribute monthNum --> <jsPath>/integration/integration.js</jsPath> <execFn>foreachMonth</execFn> <next class="SalesDataInserter" mode="updateOrInsert" logInserts="true" logUpdates="true"> <seriesName>star-class-partspurchase-data</seriesName> <column field="attributedTo" columnName="D"> <expr> org = pipeline.thisOrg.findChildOrgByField("StoreCode", value); if(org != null){ return org.orgId; } return null; </expr> </column> <column field="amount" > <!-- column G + 10*month --> <expr><![CDATA[ col = 2 + formatter.toInteger(pipeline.attributes.monthNum); if (0 >= row[col]) { return 1; } else { return row[col]; } ]]></expr> </column> <column field="fromDate"> <expr>formatter.monthStart(formatter.now, pipeline.attributes.monthNum)</expr> </column> <column field="toDate"> <expr>formatter.monthEnd(formatter.now, pipeline.attributes.monthNum)</expr> </column> </next> </next> </NextSheetStep> </nextSheetSteps> </next> </next> </RecordExecutionStep>
JsScheduleBean
JsScheduler
JsonDatabase
This represents a database which may contain JSON documents A JsonDatabase will normlly be connected to a website and accessed either through a REST api, or server side through js controllersJsonDatabaseFolder
JsonDatabaseService.OnReindexProgressEvent
JsonDatabasesFolder
JsonDocumentResource
JsonResult
Value object holding the result of some operation in a generic form which is suitable for outputting as JSON.JsonView
Generates JSON output. The source can be a named page attribute, or an actual object. There is an option to wrap the data in a JsonResult object to be compatible with the kademi forms pluginKChatApp
KHotSpotsMonitor.HotSpot
KademiCalendarSearchService.AttendeeResource
Represents an explicit invitation to an event for a userKademiCurrentDateService
KademiSimpleJdbcEventListener.SqlStats
KademiSubscriptionEvent
KademiSubscriptionGoal
KademiWebsocketWrapper
KpiDataPage.KpiLevelBean
KpiDataPage
A KpiDataPage is a resource class which represents a KPI. The parent of a KpiDataPage is the data series that it belongs to. A KPI has 3 main ingredients:- A way of aggregating records to get a single number. Eg sum, count, average. This is the aggregation
- A time interval, such as weekly, monthly, quarterly. As well as the interval there is a multiples, ie 2 weekly, 3 monthly, etc
- A list of levels which categorise the result. Eg 0-80% is Poor, 80-90% is Good, and 90-100% is Great
KpiLeaderBoard
KpiResultBean
LeadBean
LeadCompaniesFolder
LeadCompanyPage
LeadFilePage
LeadFileResource
LeadFilesPage
LeadFormBySalesPage
LeadFormNodePage
LeadFormPage
LeadFormsPage
LeadManAnalyticsPage
LeadPage
LeadProfilePage
LeadProfilesPage
LeadTaskPage
LeadTasksCsvPage
LeadTasksPage
LeadTeamPage.TeamMember
LeadTeamPage
LeadmanService
LeadsFolder.TaskStats
LeadsFolder.TeamStats
LeadsFolder
LeadsForCustomerPage
LearnerProgressEvent
An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period. Event ID: learnerProgressLearnerProgressEventTriggerType
LearningApp
LearningTemplateHelper
This is a collection of functions to assist with templating for learning related contentListOptionType
MailboxMapping
This is a mapping for a mailbox controller.MailboxMappingBuilder
Use this to create a mailbox for a custom app. This will allow the custom app to capture incoming E-Mails. For example:controllerMappings .mailboxController() .enabled(true) .verifyMailbox('verifyMailbox') .storeMail('storeMail') .build();
MaintCachePage.PerRequestSqlInfo
MaintCachePage.SqlInfo
MaintCachePage.SqlStatsAndInfo
ManageAssetsFolder
ManageBinaryAssetFolder
ManageContactRequestsFolder
ManageContentItemFolder
ManageEmailItemsFolder.EmailItemBean
ManageGroupResourcesPage.GroupInWebsiteItem
ManageImageAssetFolder
ManageJsonDatabaseFolder
ManagePostsPage.RecentPostBean
ManageProfileApplication.ProfileActionBean
ManageProfileApplication.ProfileTab
ManageProfileApplication.SummaryPanel
ManageQueryItemFolder
ManageSendEmailResource.LeadBean
ManageShoppingCartFolder
ManageShoppingCartsFolder
ManageSkusFolder.Variant
ManageTextAssetFolder
ManageUsersResultDbDTO
ManageUsersResultElasticDTO
ManageVideoAssetFolder
ManualPaymentApp
This is a simple payment provider, which does not ask for additional payment informationMapBuilder
MapStep
Adds rows to a map keyed on a value generated by an expression. The map is set into a pipeline attribute Rows are also passed through unchanged to the next step Example: <MultiStep> <nextSteps> <DatabaseSourceStep providerId="survey"> <next class="co.kademi.server.integration.impl.MapStep"> <keyColumn column="0"> <expr>value.profile.userId</expr> </keyColumn> <valueColumn column="0"/> <keyAttribute>r1</keyAttribute> </next> <column field="rewardNames"> <value class="string">r17744</value> </column> </DatabaseSourceStep> <DatabaseSourceStep providerId="survey"> <next class="ExcelOutputStep"> <firstSheetTitle>My first sheet</firstSheetTitle> <headers> <string>ID</string> <string>Reward</string> <string>First Name</string> <string>Last Name</string> <string>r1 Pets name</string> <string>r2 Pets name</string> </headers> <column field="id" column="0"> <expr>value.id</expr> </column> <column field="id" column="0"> <expr>value.reward.name</expr> </column> <column field="firstName" column="0"> <expr>value.profile.?firstName</expr> </column> <column field="surName" column="0"> <expr>value.profile.?surName</expr> </column> <column field="ReccomendBasedOnRego" column="0"> <expr>value.answers.?answer_petsName</expr> </column> <column field="ReccomendBasedOnRego" column="0"> <expr>pipeline.attributes.r1[value.profile.userId].answers.?answer_petsName</expr> </column> </next> <column field="rewardNames" > <value class="string">r25562</value> </column> </DatabaseSourceStep> </nextSteps> </MultiStep>MembershipBean
MembershipList
Just a list of MembershipBean objects, with a get method to allow retrieving them by nameMenuItem
MenuItemList
MenuManager
ModuleCompleteAction
Represents something to do when a user completes a module. Typically: - generate a certificate: defines the certificate to generate (by ID) and the number of CPD points to award (if any) - give rewards such as gift vouchers or entries in a draw: defintes the reward (by ID) and the number of rewards to give Type should be one of: - certificate - rewardModuleFolder
ModuleProgressEvent.ModuleProgressAction
ModuleProgressEvent
An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period
The attributes collection contains the ModuleFolder called module.
Event ID: moduleProgress
ModuleProgressEventTriggerType
ModuleProgressGoal
Triggers a goal as attained when theMultiStep
A step which consists of a number of steps, each given the same inputsMvelExpression
MyCalendarsPage
MyFilesPage
MyForumFolder
MyForumsFolder
MyInboxPage
MyLearningPage
This renders the myLearning template, and is accessed from the menu so is not within the context of any program or courseMyPointsDebitInfo
Information about the debits on awarded pointsMyPointsInfo
Information about the award of pointsMyQuestionFolder
MyRewardEntry
Represents an entry for a user in a rewardMyRewardInfo.RankAndPoints
MyRewardInfo.TeamMemberPoints
Information about the award of points to a member of the current user's team (aka organisation)MyRewardInfo
Information about this user and what they've been awarded from this reward, and how this compares to others in their organisationMyRewardsFolder
This is the home page for rewards information for a user, normally accessed on /rewards Within this folder are RewardFolder objects for each rewardNewCommentEvent
An event triggered when a comment is postedAttributes
comment - the text of the posted comment pageUrl - the url of the page on which the comment was postedEvent ID: newComment
NewCommentEventTriggerType
NextStep
Just holds a reference to the current pipeline and the next step to allow easy next invocation from scriptsOAuth2Details
OAuth2ProviderTemplates
OnSearchReindexProgressEvent
OrderBean
OrgData
Represents an organisation, and allows access to information about members of that organisation You can get the OrgData for the organisation which owns the current website in templating with the orgData property of the WebsiteRootFolder eg $page.find("/").orgData You can also get the OrgData object for a user's membership And once you have an OrgData, if it contains child organisations then you can use the childOrgs and allSubOrgs methods on the OrgData object to get themOrgDataList
A list of OrgData objects, with methods for filtering that listOrgMapData
OrgModulesStats
Contains module statistics for the user's primary organisation. ie the organisation which the user's primary membership is for Typically accessed from a CourseFolder or Module folder via orgStatsOrgTypeBean
OrganisationRootFolder
This is the root folder for the admin site. The admin site is used to setup users and websites accessing the serverOrganisationTableProvider
Updates child organisations of the current account Example:<next class="DatabaseUpdateStep" providerId="organisation" mode="updateOrInsert" setIntoAttribute="dealership"> <!-- use star guild code as orgid, with leading zeros - 0000133433 --> <column field="orgId" column="1" > <expr> if(formatter.isNull(value) || value == "N/A"){ return formatter.padWith("0", row[2], 10); }else{ return formatter.padWith("0", value, 10); } </expr> </column> <column field="title" column="0" /> <column field="orgType" > <value class="string">dealership</value> </column> <column field="StarClExDealerCode" column="2" /> <!-- custom field for dealership --> <column field="StarGuildCode" column="1" /> <!-- custom field for dealership --> <column field="address" column="0" /> <column field="addressLine2" column="9" /> <column field="suburb" column="10" /> <!-- custom field --> <column field="state" column="11" /> <column field="postcode" column="12" /> <column field="phone" column="13" /> <column field="country"> <value class="string">AU</value> </column> <skipIfBlankColumns> <int>0</int> <int>2</int> <int>3</int> </skipIfBlankColumns> </next>
OrganisationsFolder.OrgSearchResult
OrganisationsFolderES.OrgSearchResultES
PageViewedGoal
Paginator
Paginator2
PasswordResetPage
PaymentEvent
Called when a payment has been made Defines attributes - payment and recurring (RecurringTransactionBean) for recurring payments and customer (CustomerBean) for non recurring Trigger1 = true/false, where true indicates recurring Trigger2 = payment response code Example of email content: Thanks for your payment! Amount:PaymentEventTriggerType
PaymentItemListAttachment
Represents an email attachment.PaymentTransactionBean
Represents a payment through some payment provider, including its status and response codesPdfDocument
PdfManager
Pipeline
PipelineBean
Contains summary information about the execution of a pipelinePipelineProcessEvent
This event is fired when pipeline processing occurs. Actions are available for started, completed and failedEvent ID: pipelineProcess
PipelineProcessEventTriggerType
Points
Represents the issue of a number of credits in an incentive program, such as a prize draw or a set of gift vouchers to be allocated These are the credit side of the ledger, with PointsDebit being the debit side. The result of credits - debits is the points balancePointsExpiredEvent
Fired when reward points expirePointsExpiredEventTriggerType
PointsRowProvider
Updates - NOTE DONE YET!!!PointsValueReachedGoal
PortletMappingBuilder
PostBean
PostSearchResource
Search for forum posts, comments, etcProductBean
ProductFolder
ProductImageResource
ProductInCategoryBean
ProductInCategoryTableProvider
This table provider takes care of inserting and updating the product in categories table,which links a product to a category- productName Eg "ABC-123" - Unique product identifier, ie SKU
- categoryName - Eg "Electronics" - Unique identifier for the category to add products to
ProductInRewardResource
ProductInRewardTableProvider
This table provider takes care of inserting and updating the product in rewards table. This adds a product to a reward store.- productName Eg "ABC-123" - Unique product identifier, ie SKU
- rewardStoreName - Eg "myrewardstore" - Unique identifier for the reward store to add products to
- multiplier - Eg "2" - Multiplier for calculating points from base cost
- margin - Eg "0.1" - Override margin from reward store
- margin2 - Eg "2" - Override margin2 from reward store
- gstRate - Eg "2" - Override GST rate from reward store
- pointsOverride - Eg "2" - Final points value, overriding the calculated value
ProductOptionBean
ProductOptionsTable
The ProductOptionsTable handles inserting and updating product parameters and options, often called product variants A ProductParameter is something about a product which can have options, for example "size" and "color" are 2 common parameters. Each ProductParameter can have associated options. For example the "color" parameter could have options of "red" and "blue" The fields supported by this provider are:- productCode - Code for this variant, eg 'black'
- parameterCode - Code for this variant type, eg 'colour'
- parameterTitle - Title for this variant type, eg 'Choose your wonderful colour'
- name - Code for this variant, eg 'black'
- title - A descriptive title for the variant, eg 'Glossy Black'
- cost - The incremental cost of this variant
ProductOrder
ProductOrderBean
ProductOrderOptionBean
ProductOrderStatus
ProductOrdersEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker has been hit) , or converted (ie clicked through)ProductParameterBean
ProductsFolder
ProductsTable
This is a database table provider for Products Note that products can be associated with categories, and product options, and can also be added to reward stores. Use the CategoryTableProvider to setup categories, the ProductOptionsTable to setup variants, parameters and options for each product, and ProductInRewardTableProvider to associate products with reward stores This handles specific fields:- name - Unique identifier, ie health-fitness
- title - A descriptive title for the category
- notes - More description and notes
- status
- baseCost - The base cost of this item
- freightCost - The cost to ship the item
- category - A category to add the product to
ProfileActiveEvent
Fired when a profile is activated, ie not logged in but associated with the current requestProfileBean
ProfilePage
User's own profile page, for use within a websiteAccess on /profile/
Supports REST access to return JSON data if you set a json content type
curl 'http://version1.airpoints.loopbackdns.com:8080/profile/' -H 'Host: version1.airpoints.loopbackdns.com:8080' -H 'Accept: application/json'
{ "data":{ "optins":{ }, "profile":{ "firstName":"dd", "notes":"", "surName":"dd", "phone":"123123123", "nickName":"admin", "name":"admin", "href":"/users/admin/public", "userName":"admin", "userId":2, "email":"brad@xxxxx", "photoHash":"61084ad4739a840d9983978a48c84ea6cd793251" } }, "fieldMessages":[ ], "messages":[ ], "nextHref":"", "status":false }
ProfilePicResource
ProfileTableProvider
Updates profile and membership infoProgramFolder
ProgramsFolder
This is the root folder for e-learning. Its direct children are all programs in the current website. You can use this to find programs and courses available for the current user, or all which exist.ProgramsModel.EnrolementModel
ProgramsModel
PromotionEntryGoal
PublicProfilePage
User's own profile page, for use within a websitePurchaseAmount
Represents an amount of a certain currency required to purchase somethingQueries.AppIndexerField
Queries.QueryTable
Queries.ResultRows
Queries
Cacheable parssed representation of the query config in a repoQueriesFolder
QueryBean
QueryBuilderBean
QueryField
QueryManager
QueryService
QuizAttemptEvent
An event triggered by some condition related to learning progress, eg starting, completing or not completing after some period
The attributes collection contains the ModuleFolder called module
Event ID: quizAttempt
QuizAttemptEventTriggerType
QuizInfo
QuizResult
RecognitionEvent
RecognitionService.LevelStatus
RecognitionService
A service to manage recognition entities like Topic, Badge and LevelRecordBean
RecordExecutionStep
Wraps processing in a transaction and commits it in the finished phase This allows executions to be tagged with an execution ID, which is intended to unqiuely identify an import or export of this pipeline. This can be used to prevent multiple processings of the same data. For example, you might have a file containing points being loaded once each day. You might use an execution ID template which evaluates to (for example) "points-31012015". Then if another execution generated the same ID you would conclude this is a double-import and throw an error.ReferralEvent
This represents a referral step. This will be fired twice on a referral, once for the sender as the source profile, and once with the recipient as the source profile It will also be fired when a referral converts to a signup See the action property for determining which of those.Event ID: referral
ReferralEventTriggerType
ReferralPage
Post to /referral in a website with the following: - toName: the name of the recipient, user entered - toEmail: the email address of the recipient, user entered - message: the optional personal message to send, user entered. - pageHref: the optional page path to invite the user to, defaults to the rootRegisterOrLoginPage
RemoveFromGroupGoalAction
RemoveProfileGoalAction
RenderFileResource
This class is for rendering HTML pages. It wraps a normal FileResource and parses its content, expecting it to be a well formed HTML page. It extracts a template, if present in a link tag, and if not present defaults it to theme/page, so it will use the page.html template of the current theme Example:
home page
The title, template and body can be updated with a POST to this
Also supports read/write parameters embedded in the html, such as:
module 1
RepoAppAction
This node executes a method on a custom app.
When entered, this node will search through all repo apps looking for a RepoAppActionNodeType (aka customAction)
with the same nodeType value. If found it will execute the jsMethod on the app, passing the current rootfolder, lead, funnel and
exiting node as arguments
If the function returns a value, this will be returned as the next node id
RepoAppEventGoal
A goal which is achieved when an event defined by a repo app is fired
This is intended to work with repo apps
RepoAppEventListener
RepoAppFunnelEvent
A funnel event to be fired by custom apps.
This is intended to work with RepoAppEventGoal
RepoAppSettings
RepoAppWebsocket
RepoAppWebsocketMapping
RepoAppsEventManager
This Listens for event's on the platform and Passes it on to custom apps
listening for that event. The following event types are captured:
- TriggerEvent - This includes all the
automation triggers available
- ResourceEvent - This gets fired when a repository resource gets accessed
or changed. Includes events like DeleteEvent, AccessedEvent, MoveEvent,
PutEvent, NewFolderEvent
RepoMailboxStandardMessage.MyAttachment
Represents an email attachment
RepoMailboxStandardMessage
Represents an email message
ReportBean
ReportParams
Provides a standardised means for parsing common report request parameters
ReportingApp
RepositoryApp.RepoQueryTable
RepositoryApp
RepositoryAppTheme
RepositoryAppTriggerEvent
RepositoryAppTriggerType
ResourceList
This is a specialised List used for manipulating and querying resources
You'll usually this to sort, group, filter lists, as well as create new lists
which you can add to in the template
ResourcesPage
Displays resources based on what gruops the current user is enrolled in
Reads from a conventional folder structure associated with the website:
/resources/[group-name]
where group-name is the name of a group which is associated with the current
website
Reward
Represents an incentive program, such as a prize draw or a set of gift
vouchers to be allocated
RewardBean
RewardCurrency
RewardEntryAttachment
This represents the attachment for an entry. Usually for uploading
photos
RewardFolder
This is for non-learning rewards, ie competitions
A RewardsFolder represents a Reward, and is a folder which can contain
arbitrary content resources like images etc
RewardGrantedEvent
An event triggered by some condition related to learning progress, eg
starting, completing or not completing after some period
Event ID: rewardGranted
RewardGrantedEventTriggerType
RewardService.PointsTransaction
Represents a single transaction, ie a purchase or a credit
RewardStoreApp.ExpiringPointsTable
RewardStoreApp.PointsBalanceBean
Represents the balance of a participant. A participant can be a user or
organisation
RewardStoreCategoryFolder
RewardStoreEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker
has been hit) , or converted (ie clicked through)
RewardStoreFolder
Represents a reward store. Provides methods for accessing the current user;s
transaction history, points balance
Child resources are category folders, which contain the products
Get recent points activity with the pointsActivity parameter:
?pointsActivity☆tDate=...&endDate...
Get the current points balance with the points parameter: ?points { balance :
1000, availableBalance: 950 }
RewardStoreTemplateHelper
RewardUploadsFolder
This is a special folder which is a child of a RewardFolder, which allows
uploaded files to be viewed. There is a child for each entry with an uploaded
file as an attachment
RewardsApp.RewardEntriesSummaryTable
RewardsApp.RewardEntriesTable
RewardsShoppingCartItemResource
RewardsTemplateHelper
Functions to assist with rewards and Points templating
RootFolder
SalesDataApp.SalesByOrgTable
SalesDataFolder
This page lets you POST to create, update and delete records of any data
series by specifying parameters, including the amount and series name
A data series is any series of time stamped values, often used for collecting
sales data but can be used for any series.
SalesDataInserter
Creates a new sales data record for each call. Requires the following
arguments
- Amount
- Attributed to - orgId for an organisation, or email or userid for a
profile
- From - date/time for the beginning of the period
- To - date/time for the end of the period. Same as from if the data is for
a single point in time
And any extra fields defined on the dataseries
The columns list maps fields onto column numbers. The standard fields are:
amount, attributedTo, fromDate, toDate
SalesDataRecord
SalesManagerRole
SalesPipeline
SalesRole
SalesTeamViewerRole
SearchConfig
SearchManager
This is the goto object for text search and analytics using elasticsearch
SearchResponseView
Write an Elastic searchResponse object directly to the output stream
SearchResult
Represents a single result in a search result page
SearchResults
Represents a search result, including the number of hits, the page information, the
actual search results, and any aggregation results
SecurityManager
SendEmailGoalAction
SendSmsAction
SendToHubspotGoalAction
SeoContentBean
SeriesBean
SetAttributesStep
Selects the next step from a list of options
Configured with a map of next steps, where the key for each step is used to
select it
Provide with either a column number or an attribute name to use to get the
value to select the next step
SetFieldGoalAction
SetSourceLeadGoalAction
ShippingAddress
ShippingAddressBean
ShoppingCartBean
ShoppingCartEvent.ShoppingCartAction
ShoppingCartEvent
Fired when a item either gets added to the shopping cart or the checkout
process is completed
Event ID: shoppingCart
- ADDED_TO_CART - Fired when a item is added to the cart
- CHECKOUT_COMPLETE - Fired when the checkout process has completed
successfully
- PAYMENT_PENDING - Fired when a checkout has been submitted but payment is
pending to complete the process
ShoppingCartEventTriggerType
ShoppingCartGoal
ShoppingCartItemBean
ShoppingCartItemResource
ShoppingCartResource
SignupLog
Records a user signing up to a group
SimpleHtmlTemplater
SmsApp.SmsStats
SmsDeliveryEventTriggerType
SmsResultGoal
SocialInteractionGoal
SpliffyContentGenerator.ErrorResource
SpliffyContentGenerator
Stage
StartAndWaitFunnelGoal
StartFunnelGoalAction
StreamActivitySearchPage
Outputs the stream activity as json
StreamActivitySummaryResource
Outputs the stream activity as json
StreamEventBean
Represents the occurence of a generalised action
StreamEventBeanBuilder
Creates a StreamEventBean object that is used to push items into the profile
timeline
StreamItemPage
Outputs the stream activity as json
StreamService
A stream event represents an action on an item.
The action has a severity catgegory (eg info, success), a description, an
icon
SubmissionBean
Represents a submission to a poll, survey or competition
SubscriptionEvent
Fired when a user joins a group
Event ID: subscription
SubscriptionEventTriggerType
SurveyRowProvider
Updates not supported yet
Allows criteria parameters of startDate, finishDate and rewardNames
TakeLeadRole
TargetsMap
Just lets you get a target by name for the given result
TaskCompleteGoal
Triggers a goal as attained when the
TaskGoal.TaskOutcome
TaskGoal
TaskReminderDef
TeamBucket
TemplateOutput
Execute a velocity template, writing the result to the output.
This can be used for generating a result which returnes warnings etc
TemplateReportAttachmentFile
This is wrapped around Report instaneces of type TemplateReport. Most notably
this includes reports defined in custom apps
This will generate a downloadable attachment (eg CSV) from the TemplateReport
instance
TemplateReportPage
This is wrapped around Report instaneces of type TemplateReport. Most notably
this includes reports defined in custom apps
This type of report is the most generic, it allows the report author to
provide a template which generates any output. There are no filtering options
built in so the template must define and apply any which are required
However the standard ReportParams object is included as a property for
convenience
For custom apps, they will normally execute a search using the searchManager
which is a property of this resource
TemplatedHtmlPage
This is used for pages which just need to generate a template. Its often
extended to provide additional methods
Gets its title from the template
TemplatingApplication.TemplateDef
TestSplitAction
TestTriggerEvent
TextOptionType
TextView
ThemeBean
ThemeDependentHtmlTemplater
Allows selecting an instance of HtmlTemplater based on the theme
TimerGoal
When an automation event is triggered
TransactionStep
Wraps processing in a transaction and commits it in the finished phase
TriggerEvent
A TriggerEvent gets fired when some significant event occurs on the
server.
The trigger item properties represent textual values that can be keyed on for
event triggers. Typically these will be id's of objects in context of the
event, such as the website, group, etc.
The types of events are:
AuctionBidEvent
AuctionClosedEvent
CalendarEventAccepted
CalendarEventDeclined
ContactEvent
EmailReceivedEvent
ModuleProgressEvent
NewCommentEvent
PaymentEvent
RepositoryAppTriggerEvent
PipelineProcessEvent
ReferralEvent
RewardGrantedEvent
ReferralEvent
ShoppingCartEvent
SubscriptionEvent
TestTriggerEvent
TriggerFiredEvent
TriggerTimerEvent
VoteReceivedEvent
VotedEvent
TriggerFiredEvent
Fired when another trigger fires
TriggerFiredEventTriggerType
This type of event is for chaining triggers. It is triggered when another
trigger (possibly delayed) fires.
TriggerTimerEvent
TriggerTypeBuilder
Use this to create an automation trigger.
This will allow you to add a trigger to the automation page
For example:
controllerMappings
.automationTrigger
.triggerId('testTrigger')
.description('This is a test trigger')
.format('genFormat')
.addOption("Type", "populateOptions")
.build();
function populateOptions(){
var list = formatter.newListOptionBuilder();
for(var i = 1; i < 11; i++){
list.addOption('t' + i, 'T' + i);
}
return list.build();
}
function genFormat(page, t1, t2, t3, t4, t5){
log.info('page={} t1={} t2={} t3={} t4={} t5={}',page, t1, t2, t3, t4, t5);
return 'New post received';
}
UserAgentParserWrapper
Provides access to the user agent parser
UserDao.ProfileMatchRequest
UserManager
UserResource
UserVisitEvent
A UserVisitEvent is raised when a user first visits a site (ie the first GET
request) at least 24 hours since the last visit
Event ID: userVisit
UserVisitEventTriggerType
This trigger type means when a user has received a vote, which is not the
user who made the vote!
UserVisitGoal
When a profile is added/removed to a group
Variant
VelocityHtmlTemplater
Builds pages by plugging a few things in together: - a static skeleton for a
HTML page, ie the html, header and body tags - a Theme, which defines web
resources, such as js and css files, to include in the header. And which
defines one or more layouts for the body. - the template itself, which
provides more web resources to be included in the header, and the body layout
which will be injected into the theme template. Also defines a parameter
indicating which theme template to use
VelocityOutputStep
Generates HTML template and outputs it to the pipeline output
ViewEmailPage
ViewsBuilder
Provides methods for creating views, for templating, returning JSON, and
redirects
VoteReceivedEvent
This represents a vote being received by a user on their post or comment
Trigger items:
1 - website
2 - the vote amount (usually +1 or -1)
3 - total votes for the post or comment
4 - the type of the post, C=comment, FP=forum post, FR=forum reply
Event ID: voteReceived
VoteReceivedEventTriggerType
This trigger type means when a user has received a vote, which is not the
user who made the vote!
VotedEvent
This represents a user voting on a post. The user in context is the user
doing the voting, not the user receiving the vote!
Trigger items:
1 - website
2 - the vote amount (usually +1 or -1)
Event ID: VotedEvent
VotedEventTriggerType
VoucherBean
VoucherPage
VoucherRedemptionPage
This is the top level resource for voucher redemptions and management
Users use this page to search for vouchers and change their status to
redeemed, pending, etc, or to reset their status when a mistake has occurred.
VoucherStateGoal
When voucher is issued or change it state
VoucherStateSummary
VoucherStatusChangeBean
VoucherTypeFolder
VoucherTypeSummary
WebEngagementScoringFactorType
Scores engagement based on whether users have opened emails (ie pixel tracker
has been hit) , or converted (ie clicked through)
WebServiceStep
WebsiteRootFolder
Represents the root of a website. A "website" in this context is a product,
its a customer facing side of some activity, such as Learning Management
System or business website.
Resources within a WebsiteRootFolder will often behave differently then if
they were located under a OrganisationRootFolder, because the assumption is
that websites are for customers, while aadministrators will accessing the
organisation directly
While WebsiteRootFolder is a view of a repository (or rather a branch within
a repository) it also provides access to other repositories. Any repository
within the containing organisation can be access by name from the root
folder. For example, if an org has this structure:
myOrg - milton.io - maven
... then requests to http://milton.io/maven will show the maven repository
WebsocketMappingBuilder
XMLHttpRequest
Ask a question, or offer an answer